home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / re11.arj / REDEMO2.PAS < prev    next >
Pascal/Delphi Source File  |  1994-02-10  |  2KB  |  93 lines

  1. (* ************************************************************** *)
  2. (* redemo2.pas - Demonstrates how to display XGF images from      *)
  3. (*               inside a resource file.                          *)
  4. (*                                                                *)
  5. (* Use Raster Master and Raster Utilities to create XGF files.    *)
  6. (*                                                                *)
  7. (* ************************************************************** *)
  8.  
  9. Program disxgf;
  10.    uses crt,graph;
  11.  
  12. Type
  13.   resheadrec = Record
  14.                  rfid     : array[1..3] of char;(* resource file id - RES   *)
  15.                  resitems : Word;               (* number of resource items *)
  16.                End;
  17.  
  18.   resitemrec =Record
  19.                 rt     : Word;                    (* resource type *)
  20.                 rid    : array[1..12] of char;    (* resource id   *)
  21.                 offset : longint;                 (* file offset   *)
  22.                 length : longint;                 (* file size     *)
  23.               End;
  24.  
  25.  
  26. Procedure setvga16;
  27. var
  28.  gd,gm : integer;
  29. begin
  30.  gd:=VGA;
  31.  gm:=VGALO;
  32.  
  33.  initgraph(gd, gm, '');
  34. end;
  35.  
  36. Procedure res_dis_xgf(x,y : integer; filename : string; ri : integer);
  37. var
  38.  F            : File;
  39.  width,height : integer;
  40.  bpl,i,error  : integer;
  41.  scanline     : array[1..1030] of integer;
  42.  res          : resitemrec;
  43.  
  44. begin
  45. {$I-}
  46.  Assign(F,filename);
  47.  Reset(F,1);
  48.  error:=IORESULT;
  49.  
  50.  if (error=0) then
  51.  begin
  52.    seek(F,(LongInt(sizeof(resheadrec))+LongInt((ri-1))*
  53.            Longint(sizeof(resitemrec))));
  54.  
  55.    blockread(F,res,sizeof(res));             (* resource record *)
  56.  
  57.    seek(F,res.offset);
  58.    blockread(F,width,2);
  59.    blockread(F,height,2);
  60.  
  61.    scanline[1]:=width;
  62.    scanline[2]:=0;
  63.  
  64.    bpl:=imagesize(0,0,width,0)-6;
  65.  
  66.    for i:=0 to height do
  67.    begin
  68.      blockread(F,scanline[3],bpl);
  69.      putimage(x,y+i,Ptr(seg(scanline),ofs(scanline))^,0);
  70.    end;
  71.  
  72.    close(F);
  73.  end;
  74. {$I-}
  75. end;
  76.  
  77. begin
  78.   setvga16;
  79.  
  80.   setfillstyle(solidfill,BLUE);
  81.   bar(0,0,getmaxx,getmaxy);
  82.  
  83.   res_dis_xgf(0,0,'pics.res',1);
  84.   res_dis_xgf(200,50,'pics.res',2);
  85.   res_dis_xgf(300,100,'pics.res',3);
  86.   res_dis_xgf(200,0,'pics.res',4);
  87.   res_dis_xgf(400,50,'pics.res',5);
  88.   res_dis_xgf(500,100,'pics.res',6);
  89.  
  90.   repeat until keypressed;
  91.   closegraph;
  92. end.
  93.